home *** CD-ROM | disk | FTP | other *** search
- REM
- REM WEATHER FORECAST PROGRAM by Phil Baughn
- REM
- REM This software program is distributed as "SHAREWARE". You may
- REM feel free to copy and revise it as you like as long as you do
- REM not alter or remove the credit information in the program. If
- REM you find that you have made some significant improvements and
- REM additions to this package, please upload them to my attention
- REM either at The MAILROOM RBBS or to Compuserve; User#76044,1535.
- REM Enjoy! Phil Baughn
- REM
- REM Mailing address: The MAILROOM RBBS-PC
- REM c/o COMMUNITRONICS OF LEXINGTON, INC.
- REM attn. Phil Baughn
- REM 121 Prosperous Place, Suite 6B
- REM Lexington, KY 40509
- REM Data: (606)263-1234
- REM Voice: (606)263-2737
- REM
- REM Special Credit to Mssrs. Bernard N. Meisner and Leon F. Graves
- REM who developed the Heat Index / Apparent Temperature Formula.
- REM
- REM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- REM
- REM BELOW TURNS KEYS OFF, SELECTS COLOR OR MONO, TURNS CAPS ON
- REM
- DEF SEG = 0
- POKE 1047, 96
- DEF SEG
- TARGET2:
- KEY OFF
- CLS
- LOCATE 10, 23
- INPUT "Do you want Color? (Y)es or (N)o"; CLRANS$
- IF LEFT$(CLRANS$, 1) = "Y" OR LEFT$(CLRANS$, 1) = "y" THEN
- CLRT$ = "Y"
- GOTO TARGET1
- END IF
- IF LEFT$(CLRANS$, 1) <> "N" AND LEFT$(CLRANS$, 1) <> "n" THEN
- GOTO TARGET2
- END IF
- CLRT$ = " "
- REM
- REM
- TARGET1:
- GOSUB TARGET3
- REM GET WELCOME SCREEN AND CREDITS IN ABOVE LINE
- REM GET MASTER WELCOME DOCUMENT IN FOLLOWING LINE
- GOSUB TARGET4
- REM
- REM PRINT MAIN MENU
- REM
- TARGET15:
- CLS
- IF CLRT$ = "Y" THEN
- COLOR 14
- END IF
- LOCATE 9, 20
- PRINT "1 - WEATHER FORECAST PROGRAM"
- IF CLRT$ = "Y" THEN
- COLOR 11
- END IF
- LOCATE 11, 20
- PRINT "2 - WIND CHILL CALCULATION"
- IF CLRT$ = "Y" THEN
- COLOR 12
- END IF
- LOCATE 13, 20
- PRINT "3 - TEMPERATURE HUMIDITY INDEX"
- IF CLRT$ = "Y" THEN
- COLOR 13
- END IF
- LOCATE 15, 20
- PRINT "4 - HEAT INDEX CALCULATION"
- IF CLRT$ = "Y" THEN
- COLOR 14
- END IF
- LOCATE 17, 20
- PRINT "5 - DEW POINT CALCULATION"
- IF CLRT$ = "Y" THEN
- COLOR 9
- END IF
- LOCATE 5, 5
- INPUT "ENTER THE NUMBER OF THE WEATHER PROGRAM WHICH YOU WISH TO RUN "; CHOICE
- REM
- REM GET FORCASTING SUNROUTINE
- REM
- IF CHOICE = 1 THEN
- GOSUB TARGET5
- ELSE
- GOTO TARGET6
- END IF
- GOTO TARGET7
- REM
- REM GET WIND CHILL SUBROUTINE
- REM
- TARGET6:
- IF CHOICE = 2 THEN
- GOSUB TARGET8
- ELSE
- GOTO TARGET9
- END IF
- GOTO TARGET7
- REM
- REM GET TEMP-HUMIDITY SUBROUTINE
- REM
- TARGET9:
- IF CHOICE = 3 THEN
- GOSUB TARGET10
- ELSE
- GOTO TARGET11
- END IF
- GOTO TARGET7
- REM
- REM GET HEAT INDEX SUBROUTINE
- REM
- TARGET11:
- IF CHOICE = 4 THEN
- GOSUB TARGET12
- ELSE
- GOTO TARGET13
- END IF
- GOTO TARGET7
- REM
- REM GET DEW POINT SUBROUTINE
- REM
- TARGET13:
- IF CHOICE = 5 THEN
- GOSUB TARGET14
- ELSE
- GOTO TARGET15
- END IF
- REM
- REM LOOP OR QUIT
- REM
- TARGET7:
- LOCATE 24, 14
- INPUT "DO YOU WISH TO DO A DIFFERENT CALCULATION (Y/N)"; D$
- REM
- REM LOOP
- REM
- IF D$ = "Y" OR D$ = "y" THEN
- GOTO TARGET15
- END IF
- REM
- REM QUIT WITH EPILOG SCREEN AND RESET IF CLRT$="Y" THEN COLORS TO NORMAL
- REM ALSO PLACE CAPS AND NUMBERS LOCK KEYS BACK TO OFF STATUS
- REM
- IF CLRT$ = "Y" THEN
- COLOR 12, 0, 0
- END IF
- CLS
- LOCATE 9, 23
- PRINT "I hope you enjoyed WEATHER and"
- LOCATE 11, 21
- PRINT "that your forecast was a good one."
- LOCATE 15, 20
- PRINT "Let us here from you on The MAILROOM"
- LOCATE 17, 18
- PRINT "Data (606)263-1234 - 9600 Baud Supported"
- LOCATE 19, 37
- PRINT "- Phil Baughn"
- DEF SEG = 0
- POKE 1047, 0
- DEF SEG
- IF CLRT$ = "Y" THEN
- COLOR 7, 0, 0
- END IF
- LOCATE 24, 1
- END
- REM ~~~~~~~~~~~~~~PROGRAM ENDS HERE~~~~~~~~~~~~~~
- REM
- REM ~~~~~~~~SUBROUTINE MODULES BEGIN HERE~~~~~~~~
- REM
- REM WELCOME SCREEN AND CREDITS SUBROUTINE
- REM
- TARGET3:
- CLS
- WIDTH 80
- IF CLRT$ = "Y" THEN
- COLOR 11, 0
- END IF
- LOCATE 5, 5
- PRINT CHR$(201)
- LOCATE 5, 75
- PRINT CHR$(187)
- LOCATE 20, 5
- PRINT CHR$(200)
- LOCATE 20, 75
- PRINT CHR$(188)
- FOR N = 6 TO 19
- LOCATE N, 5
- PRINT CHR$(186)
- LOCATE N, 75
- PRINT CHR$(186)
- NEXT N
- FOR N = 6 TO 74
- LOCATE 5, N
- PRINT CHR$(205)
- LOCATE 20, N
- PRINT CHR$(205)
- NEXT N
- IF CLRT$ = "Y" THEN
- COLOR 13, 0
- END IF
- LOCATE 7, 31
- PRINT "WEATHER FORCASTING"
- LOCATE 9, 28
- PRINT "DEVELOPED FOR THE IBM-PC"
- LOCATE 10, 39
- PRINT "BY"
- LOCATE 11, 35
- PRINT "PHIL BAUGHN"
- LOCATE 13, 14
- PRINT "Special Thanks For Module Improvements To Sean Gayle,"
- LOCATE 14, 11
- PRINT "John Fleming, & Brad James - Meteorologist, WTVQ, Lexington"
- LOCATE 16, 20
- PRINT "Distributed Through The MAILROOM RBBS-PC"
- LOCATE 17, 29
- PRINT "In Lexington, Kentucky"
- LOCATE 18, 22
- PRINT "(606)263-1234 24 Hours - 9600 Baud"
- LOCATE 19, 22
- PRINT "Latest Revision [ 6.0 ]; August 1990"
- LOCATE 22, 27
- PRINT "Press any key when ready..."
- TARGET16:
- IF INKEY$ = "" GOTO TARGET16
- IF CLRT$ = "Y" THEN
- COLOR 7, 0, 0
- END IF
- CLS
- RETURN
- REM
- REM MAIN WELCOME DOCUMENT SUBROUTINE
- REM
- TARGET4:
- IF CLRT$ = "Y" THEN
- COLOR 14, 1, 1
- END IF
- CLS
- PRINT " "
- PRINT " "
- PRINT " This program will provide you with a very good forcast providing"
- PRINT " you supply the correct information as to barometric pressure and"
- PRINT " wind direction. This method has been used for ages by sailors &"
- PRINT " the tables themselves can still be found in almost all editions"
- PRINT " of The Farmers Almanac."
- PRINT " "
- PRINT " The other four programs which are included at present; Wind Chill,"
- PRINT " Dew Point, Temp/Humidity, & Heat Index; can be especially important"
- PRINT " when working outdoors. Wind Chill tells you the true FEEL of the"
- PRINT " temperature after the wind has it's effect. It's not always safe"
- PRINT " to simply look at the outdoor thermometer! Humidity also effects"
- PRINT " the temperature. Higher humidity levels cause it to effect your"
- PRINT " body as if it were hotter than the thermometer states."
- PRINT " "
- PRINT " Enjoy the program, please pass along any improvements which you"
- PRINT " may develop or additional modules which will fit well into the"
- PRINT " menu. Listing the first part of the program, lines 1-20, will"
- PRINT " provide you with more detailed contact information."
- PRINT " "
- PRINT " "
- PRINT " Press any key when ready..."
- TARGET17:
- IF INKEY$ = "" GOTO TARGET17
- IF CLRT$ = "Y" THEN
- COLOR 7, 0, 0
- END IF
- CLS
- RETURN
- REM
- REM WIND-BAROMETER FORECASTING SUBROUTINE
- REM
- TARGET5:
- CLS
- IF CLRT$ = "Y" THEN
- COLOR 14
- END IF
- LOCATE 2, 25
- PRINT "WEATHER FORECAST PROGRAM"
- IF CLRT$ = "Y" THEN
- COLOR 5
- END IF
- LOCATE 4, 32
- PRINT DATE$
- LOCATE 5, 33
- PRINT TIME$
- IF CLRT$ = "Y" THEN
- COLOR 3, 0, 0
- END IF
- TARGET18:
- KEY OFF
- LOCATE 17, 1
- PRINT " In inches, between 25.0 & 35.0. Example: 29.95"
- LOCATE 7, 12
- INPUT "ENTER CURRENT BAROMETRIC PRESSURE "; CBP
- IF CBP < 25 THEN
- GOTO TARGET18
- END IF
- IF CBP > 35 THEN
- GOTO TARGET18
- END IF
-
- BEGINING.OF.TRAP.1:
-
- LOCATE 17, 1
- PRINT " "
- LOCATE 17, 1
- PRINT " Allowable entries are: N NE E SE S SW W NW"
- LOCATE 8, 12
- INPUT "WIND DIRECTION IS CURRENTLY FROM THE "; PWD$
-
- IF PWD$ = "N" THEN GOTO END.OF.TRAP.1
- IF PWD$ = "NE" THEN GOTO END.OF.TRAP.1
- IF PWD$ = "E" THEN GOTO END.OF.TRAP.1
- IF PWD$ = "SE" THEN GOTO END.OF.TRAP.1
- IF PWD$ = "S" THEN GOTO END.OF.TRAP.1
- IF PWD$ = "SW" THEN GOTO END.OF.TRAP.1
- IF PWD$ = "W" THEN GOTO END.OF.TRAP.1
- IF PWD$ = "NW" THEN GOTO END.OF.TRAP.1
-
- BEEP
- GOTO BEGINING.OF.TRAP.1
-
- END.OF.TRAP.1:
-
- IF PWD$ = "SW" THEN
- GOTO TARGET19
- ELSE
- GOTO TARGET20
- END IF
- TARGET19:
-
- BEGINING.OF.TRAP.2:
-
- LOCATE 17, 1
- PRINT " "
- LOCATE 17, 1
- PRINT " Allowable entries are: N NE E SE S SW W NW"
- LOCATE 9, 12
- INPUT "PREVIOUS WIND DIRECTION WAS FROM THE "; PWD$
-
- IF PWD$ = "N" THEN GOTO END.OF.TRAP.2
- IF PWD$ = "NE" THEN GOTO END.OF.TRAP.2
- IF PWD$ = "E" THEN GOTO END.OF.TRAP.2
- IF PWD$ = "SE" THEN GOTO END.OF.TRAP.2
- IF PWD$ = "S" THEN GOTO END.OF.TRAP.2
- IF PWD$ = "SW" THEN GOTO END.OF.TRAP.2
- IF PWD$ = "W" THEN GOTO END.OF.TRAP.2
- IF PWD$ = "NW" THEN GOTO END.OF.TRAP.2
-
- BEEP
- GOTO BEGINING.OF.TRAP.2
-
- END.OF.TRAP.2:
-
- GOTO TARGET21
- TARGET20:
- IF PWD$ = "SE" THEN
- GOTO TARGET22
- ELSE
- GOTO TARGET23
- END IF
- TARGET22:
-
- BEGINING.OF.TRAP.3:
-
- LOCATE 17, 1
- PRINT " "
- LOCATE 17, 1
- PRINT " Allowable entries are: N NE E SE S SW W NW"
- LOCATE 9, 12
- INPUT "PREVIOUS WIND DIRECTION WAS FROM THE "; PWD$
-
- IF PWD$ = "N" THEN GOTO END.OF.TRAP.3
- IF PWD$ = "NE" THEN GOTO END.OF.TRAP.3
- IF PWD$ = "E" THEN GOTO END.OF.TRAP.3
- IF PWD$ = "SE" THEN GOTO END.OF.TRAP.3
- IF PWD$ = "S" THEN GOTO END.OF.TRAP.3
- IF PWD$ = "SW" THEN GOTO END.OF.TRAP.3
- IF PWD$ = "W" THEN GOTO END.OF.TRAP.3
- IF PWD$ = "NW" THEN GOTO END.OF.TRAP.3
-
- BEEP
- GOTO BEGINING.OF.TRAP.3
-
- END.OF.TRAP.3:
-
-
- GOTO TARGET24
- TARGET23:
- IF PWD$ = "S" THEN
- GOTO TARGET25
- ELSE
- GOTO TARGET26
- END IF
- TARGET26:
- IF PWD$ = "N" THEN
- GOTO TARGET25
- ELSE
- GOTO TARGET27
- END IF
- TARGET27:
- IF PWD$ = "NW" THEN
- GOTO TARGET25
- ELSE
- GOTO TARGET28
- END IF
- TARGET28:
- IF PWD$ = "NE" THEN
- GOTO TARGET25
- ELSE
- GOTO TARGET29
- END IF
- TARGET25:
- LOCATE 17, 1
- PRINT " "
- LOCATE 18, 23
- IF CLRT$ = "Y" THEN
- COLOR 9
- END IF
- PRINT "NO IMMEDIATE CHANGE IS FORECAST"
- IF CLRT$ = "Y" THEN
- COLOR 7, 0, 0
- END IF
- GOTO TARGET30
- TARGET21:
- IF PWD$ = "S" THEN
- GOTO TARGET31
- ELSE
- GOTO TARGET32
- END IF
- TARGET32:
- IF PWD$ = "NW" THEN
- GOTO TARGET33
- ELSE
- GOTO TARGET34
- END IF
- TARGET31:
- PWD$ = "M"
- GOTO TARGET35
- TARGET33:
- PWD$ = "N"
- GOTO TARGET35
- TARGET34:
- PWD$ = "O"
- GOTO TARGET35
- TARGET24:
- IF PWD$ = "NE" THEN
- GOTO TARGET36
- ELSE
- GOTO TARGET37
- END IF
- TARGET37:
- IF PWD$ = "S" THEN
- GOTO TARGET38
- ELSE
- GOTO TARGET39
- END IF
- TARGET36:
- PWD$ = "P"
- GOTO TARGET35
- TARGET38:
- PWD$ = "Q"
- GOTO TARGET35
- TARGET39:
- PWD$ = "R"
- GOTO TARGET35
- TARGET29:
- IF PWD$ = "E" THEN
- GOTO TARGET40
- ELSE
- GOTO TARGET41
- END IF
- TARGET41:
- IF PWD$ = "W" THEN
- GOTO TARGET42
- END IF
- TARGET40:
- PWD$ = "S"
- GOTO TARGET35
- TARGET42:
- PWD$ = "T"
- TARGET35:
- IF CLRT$ = "Y" THEN
- COLOR 4
- END IF
- LOCATE 17, 1
- PRINT " "
- LOCATE 13, 12
- PRINT "WIND CONDITION CODE IS ", PWD$;
- IF CLRT$ = "Y" THEN
- COLOR 3, 0, 0
- END IF
- IF CBP > 30.01 THEN
- GOTO TARGET43
- ELSE
- GOTO TARGET44
- END IF
- TARGET44:
- IF CBP < 29.81 THEN
- GOTO TARGET45
- ELSE
- GOTO TARGET46
- END IF
- TARGET46:
-
- BEGINING.OF.TRAP.4:
-
- LOCATE 17, 1
- PRINT " "
- LOCATE 10, 12
- INPUT "IS PRESSURE RISING (R), FALLING (F), OR STEADY (S) "; BM$
-
- IF BM$ = "F" THEN GOTO END.OF.TRAP.4
- IF BM$ = "R" THEN GOTO END.OF.TRAP.4
- IF BM$ = "S" THEN GOTO END.OF.TRAP.4
-
- BEEP
- GOTO BEGINING.OF.TRAP.4
-
- END.OF.TRAP.4:
-
- IF BM$ = "F" THEN
- GOTO TARGET47
- ELSE
- GOTO TARGET48
- END IF
- TARGET47:
-
- BEGINING.OF.TRAP.5:
-
- LOCATE 17, 1
- PRINT " "
- LOCATE 11, 12
- INPUT "IS IT FALLING RAPIDLY (R) OR SLOWLY (S) "; BM$
-
- IF BM$ = "R" THEN GOTO END.OF.TRAP.5
- IF BM$ = "S" THEN GOTO END.OF.TRAP.5
-
- BEEP
- GOTO BEGINING.OF.TRAP.5
-
- END.OF.TRAP.5:
-
- IF BM$ = "R" THEN
- GOTO TARGET49
- ELSE
- GOTO TARGET50
- END IF
- TARGET49:
- BM$ = "C6"
- GOTO TARGET51
- TARGET50:
- BM$ = "C5"
- GOTO TARGET51
- TARGET48:
- IF BM$ = "R" THEN
- GOTO TARGET52
- ELSE
- GOTO TARGET53
- END IF
- TARGET52:
- BM$ = "C7"
- GOTO TARGET51
- TARGET53:
- BM$ = "C0"
- GOTO TARGET51
- TARGET43:
-
- BEGINING.OF.TRAP.6:
-
- LOCATE 17, 1
- PRINT " "
- LOCATE 10, 12
- INPUT "IS PRESSURE RISING (R), FALLING (F), OR STEADY (S) "; BM$
-
- IF BM$ = "F" THEN GOTO END.OF.TRAP.6
- IF BM$ = "R" THEN GOTO END.OF.TRAP.6
- IF BM$ = "S" THEN GOTO END.OF.TRAP.6
-
- BEEP
- GOTO BEGINING.OF.TRAP.6
-
- END.OF.TRAP.6:
-
-
- IF BM$ = "F" THEN
- GOTO TARGET54
- ELSE
- GOTO TARGET55
- END IF
- TARGET54:
-
- BEGINING.OF.TRAP.7:
-
- LOCATE 17, 1
- PRINT " "
- LOCATE 11, 12
- INPUT "IS IT FALLING RAPIDLY (R) OR SLOWLY (S) "; BM$
-
- IF BM$ = "R" THEN GOTO END.OF.TRAP.7
- IF BM$ = "S" THEN GOTO END.OF.TRAP.7
-
- BEEP
- GOTO BEGINING.OF.TRAP.7
-
- END.OF.TRAP.7:
-
-
- IF BM$ = "R" THEN
- GOTO TARGET56
- ELSE
- GOTO TARGET57
- END IF
- TARGET56:
- BM$ = "C4"
- GOTO TARGET51
- TARGET57:
- BM$ = "C3"
- GOTO TARGET51
- TARGET55:
- IF BM$ = "S" THEN
- GOTO TARGET58
- ELSE
- GOTO TARGET59
- END IF
- TARGET58:
- BM$ = "C1"
- GOTO TARGET51
- TARGET59:
- BM$ = "C2"
- GOTO TARGET51
- TARGET45:
-
- BEGINING.OF.TRAP.8:
-
- LOCATE 17, 1
- PRINT " "
- LOCATE 10, 12
- INPUT "IS THE PRESSURE RISING (R) OR FALLING (F) "; BM$
-
- IF BM$ = "R" THEN GOTO END.OF.TRAP.8
- IF BM$ = "F" THEN GOTO END.OF.TRAP.8
-
- BEEP
- GOTO BEGINING.OF.TRAP.8
-
- END.OF.TRAP.8:
-
-
- IF BM$ = "R" THEN
- GOTO TARGET60
- ELSE
- GOTO TARGET61
- END IF
- TARGET60:
- BM$ = "C8"
- GOTO TARGET51
- TARGET61:
- BM$ = "C9"
- GOTO TARGET51
- TARGET51:
- IF CLRT$ = "Y" THEN
- COLOR 4
- END IF
-
- LOCATE 17, 1
- PRINT " "
-
- LOCATE 14, 12
- PRINT "BAROMETRIC CODE IS ", BM$
- IF CLRT$ = "Y" THEN
- COLOR 3, 0, 0
- END IF
- IF PWD$ = "O" THEN
- GOTO TARGET25
- END IF
- IF PWD$ = "R" THEN
- GOTO TARGET25
- END IF
-
- LOCATE 17, 1
- PRINT " "
-
- LOCATE 17, 18
- PRINT "PLEASE WAIT - FORECAST BEING COMPUTED"
- FOR X = 1 TO 3200
- NEXT X
- LOCATE 17, 18
- PRINT " "
- IF PWD$ = "T" AND BM$ = "C8" THEN
- GOTO TARGET62
- END IF
- IF PWD$ = "M" AND BM$ = "C7" THEN
- GOTO TARGET63
- END IF
- IF PWD$ = "Q" AND BM$ = "C3" THEN
- GOTO TARGET64
- END IF
- IF PWD$ = "Q" AND BM$ = "C4" THEN
- GOTO TARGET65
- END IF
- IF PWD$ = "Q" AND BM$ = "C9" THEN
- GOTO TARGET66
- END IF
- IF PWD$ = "P" AND BM$ = "C3" THEN
- GOTO TARGET67
- END IF
- IF PWD$ = "P" AND BM$ = "C4" THEN
- GOTO TARGET68
- END IF
- IF PWD$ = "P" AND BM$ = "C5" THEN
- GOTO TARGET69
- END IF
- IF PWD$ = "P" AND BM$ = "C6" THEN
- GOTO TARGET70
- END IF
- IF PWD$ = "P" AND BM$ = "C9" THEN
- GOTO TARGET66
- END IF
- IF PWD$ = "S" AND BM$ = "C3" THEN
- GOTO TARGET71
- END IF
- IF PWD$ = "S" AND BM$ = "C4" THEN
- GOTO TARGET72
- END IF
- IF PWD$ = "S" AND BM$ = "C9" THEN
- GOTO TARGET73
- END IF
- IF PWD$ = "N" AND BM$ = "C1" THEN
- GOTO TARGET74
- END IF
- IF PWD$ = "N" AND BM$ = "C2" THEN
- GOTO TARGET75
- END IF
- IF PWD$ = "N" AND BM$ = "C3" THEN
- GOTO TARGET76
- END IF
- IF PWD$ = "N" AND BM$ = "C7" THEN
- GOTO TARGET63
- END IF
- LOCATE 17, 20
- IF CLRT$ = "Y" THEN
- COLOR 13
- END IF
- PRINT "WIND INCREASING; RAIN WITHIN 12 HOURS"
- GOTO TARGET30
- GOTO TARGET25
- TARGET62:
- LOCATE 17, 30
- IF CLRT$ = "Y" THEN
- COLOR 13
- END IF
- PRINT "CLEARING AND COLDER"
- GOTO TARGET30
- TARGET63:
- LOCATE 17, 20
- IF CLRT$ = "Y" THEN
- COLOR 13
- END IF
- PRINT "CLEARING WITHIN A FEW HOURS/"
- LOCATE 19, 20
- PRINT "FAIR FOR SEVERAL DAYS"
- GOTO TARGET30
- TARGET64:
- LOCATE 17, 30
- IF CLRT$ = "Y" THEN
- COLOR 13
- END IF
- PRINT "RAIN WITHIN 24 HOURS"
- GOTO TARGET30
- TARGET65:
- LOCATE 17, 20
- IF CLRT$ = "Y" THEN
- COLOR 13
- END IF
- PRINT "WIND INCREASING; RAIN WITHIN 24 HOURS"
- GOTO TARGET30
- TARGET66:
- LOCATE 17, 15
- IF CLRT$ = "Y" THEN
- COLOR 15
- END IF
- PRINT "SEVERE STORM IMMIMENT, FOLLOWED WITHIN 24 HOURS"
- LOCATE 19, 15
- PRINT "BY CLEARING. IN WINTER, COLDER TEMPERATURES."
- GOTO TARGET30
- TARGET67:
- LOCATE 17, 30
- IF CLRT$ = "Y" THEN
- COLOR 13
- END IF
- PRINT "RAIN WITHIN 12 TO 18 HOURS"
- GOTO TARGET30
- TARGET68:
- LOCATE 17, 20
- IF CLRT$ = "Y" THEN
- COLOR 13
- END IF
- TARGET69:
- LOCATE 17, 20
- IF CLRT$ = "Y" THEN
- COLOR 13
- END IF
- PRINT "RAIN WILL CONTINUE FOR 1 TO 2 DAYS"
- GOTO TARGET30
- TARGET70:
- LOCATE 17, 15
- IF CLRT$ = "Y" THEN
- COLOR 13
- END IF
- PRINT "RAIN, WITH HIGH WIND, FOLLOWED WITHIN 36 HOURS BY"
- LOCATE 19, 15
- PRINT "CLEARING. IN WINTER - COLDER TEMPERATURES."
- GOTO TARGET30
- TARGET71:
- LOCATE 17, 15
- IF CLRT$ = "Y" THEN
- COLOR 13
- END IF
- PRINT "SUMMER - LIGHT WINDS; RAIN MAY NOT FALL FOR"
- LOCATE 19, 15
- PRINT "SEVERAL DAYS. WINTER - RAIN WITHIN 24 HOURS"
- GOTO TARGET30
- TARGET72:
- LOCATE 17, 15
- IF CLRT$ = "Y" THEN
- COLOR 13
- END IF
- PRINT "SUMMER RAIN PROBABLE 12/24 HOURS. WINTER"
- LOCATE 19, 15
- PRINT "RAIN OR SNOW, INCREASING WIND; BAD WEATHER"
- LOCATE 21, 15
- PRINT "OFTEN SETS IN WHEN BAROMETER BEGINS TO FALL AND"
- LOCATE 23, 15
- PRINT "WINDS SET IN FROM THE NORTHEAST."
- GOTO TARGET30
- TARGET73:
- LOCATE 17, 15
- IF CLRT$ = "Y" THEN
- COLOR 15
- END IF
- PRINT "SEVERE NORTHEAST GALE AND HEAVY PRECIPITATION,"
- LOCATE 19, 15
- PRINT "IN WINTER - HEAVY SNOW FOLLOWED BY A COLD WAVE"
- GOTO TARGET30
- TARGET74:
- LOCATE 17, 20
- IF CLRT$ = "Y" THEN
- COLOR 13
- END IF
- PRINT "CONTINUED FAIR WEATHER WITH"
- LOCATE 19, 20
- PRINT "NO DECIDED TEMPERATURE CHANGE"
- GOTO TARGET30
- TARGET75:
- LOCATE 17, 20
- IF CLRT$ = "Y" THEN
- COLOR 13
- END IF
- PRINT "FAIR, FOLLOWED WITHIN 2 DAYS BY RAIN"
- GOTO TARGET30
- TARGET76:
- LOCATE 17, 15
- IF CLRT$ = "Y" THEN
- COLOR 13
- END IF
- PRINT "FAIR FOR 2 DAYS WITH SLOWLY RISING TEMPERATURES"
- TARGET30:
- IF CLRT$ = "Y" THEN
- COLOR 7, 0, 0
- END IF
- LOCATE 24, 17
- INPUT "DO YOU WISH TO RUN ANOTHER FORECAST (Y/N)"; L$
- IF L$ = "Y" OR L$ = "y" THEN
- GOTO TARGET5
- END IF
- RETURN
- REM
- REM WIND CHILL SUBROUTINE
- REM
- TARGET8:
- CLS
- IF CLRT$ = "Y" THEN
- COLOR 11
- END IF
- LOCATE 2, 27
- PRINT "WIND CHILL CALCULATION"
- IF CLRT$ = "Y" THEN
- COLOR 5
- END IF
- LOCATE 4, 34
- PRINT DATE$
- LOCATE 5, 35
- PRINT TIME$
- IF CLRT$ = "Y" THEN
- COLOR 3, 0, 0
- END IF
- KEY OFF
- LOCATE 7, 12
- INPUT "ENTER TEMPERATURE IN FAHRENHEIT "; T
- LOCATE 8, 12
- INPUT "ENTER WIND SPEED IN MILES PER HOUR "; V
- IF V <= 4 THEN V = 4
- T1 = T
- V = (V * 1609.35) / (3600)
- TC = 33 - ((T - 32) * (5 / 9))
- H = (10.45 + (SQR(V) * 10) - V) * TC
- X = H - 506.784
- IF X < 0 THEN
- X1 = T1
- GOTO TARGET77
- END IF
- X1 = 50 - (X / 12.3)
- X1 = INT(((X1 * 10) + 5) / 10)
- IF CLRT$ = "Y" THEN
- COLOR 3
- END IF
- LOCATE 11, 19
- PRINT "PLEASE WAIT - WIND CHILL BEING COMPUTED"
- FOR ZZ = 1 TO 1600
- NEXT ZZ
- IF CLRT$ = "Y" THEN
- COLOR 4
- END IF
- LOCATE 13, 17
- PRINT "T1=T:V=(V*1069.35)/3600:TC=33-((T-32)*(5/9))"
- FOR Z = 1 TO 800
- NEXT Z
- LOCATE 14, 20
- PRINT "H=(10.45+(SQR(V)*10)-V)*TC:X=H-506.784"
- FOR ZXC = 1 TO 800
- NEXT ZXC
- LOCATE 15, 21
- PRINT "X1=50-(X/12.3):X1=INT(((X1*10)+5)/10)"
- FOR ZX = 1 TO 1600
- NEXT ZX
- TARGET77:
- IF CLRT$ = "Y" THEN
- COLOR 13
- END IF
- LOCATE 19, 15
- PRINT "WIND CHILL TEMPERATURE = "; X1; "DEGREES FAHRENHEIT"
- IF CLRT$ = "Y" THEN
- COLOR 7, 0, 0
- END IF
- LOCATE 24, 19
- INPUT "RUN ANOTHER WIND CHILL FACTOR (Y/N)"; L$
- IF L$ = "Y" OR L$ = "y" THEN
- GOTO TARGET8
- END IF
- RETURN
- REM
- REM HEAT INDEX SUBROUTINE
- REM
- TARGET12:
- CLS
- IF CLRT$ = "Y" THEN
- COLOR 11
- END IF
- LOCATE 2, 27
- PRINT "HEAT INDEX CALCULATION"
- IF CLRT$ = "Y" THEN
- COLOR 5
- END IF
- LOCATE 4, 34
- PRINT DATE$
- LOCATE 5, 35
- PRINT TIME$
- IF CLRT$ = "Y" THEN
- COLOR 3, 0, 0
- END IF
- KEY OFF
- LOCATE 7, 11
- INPUT "ENTER THE CURRENT TEMPERATURE IN DEGREES FAHRENHEIT "; TA
- U$ = "F"
- LOCATE 8, 11
- INPUT "ENTER THE RELATIVE HUMIDITY (`50'= 50% ) "; RH
- IF CLRT$ = "Y" THEN
- COLOR 9
- END IF
- LOCATE 11, 18
- PRINT "PLEASE WAIT - HEAT INDEX BEING COMPUTED"
- FOR ZZ = 1 TO 1600
- NEXT ZZ
- IF CLRT$ = "Y" THEN
- COLOR 4
- END IF
- LOCATE 13, 23
- PRINT "Heat Index Is Also Refered To"
- FOR Z = 1 TO 800
- NEXT Z
- LOCATE 14, 17
- PRINT "As The Apparent Temperature. See The H/I"
- FOR ZXC = 1 TO 800
- NEXT ZXC
- LOCATE 15, 18
- PRINT "Explanation & Danger Table For Details."
- FOR ZX = 1 TO 1600
- NEXT ZX
- GOSUB TARGET78
- IF CLRT$ = "Y" THEN
- COLOR 11
- END IF
- LOCATE 19, 19
- PRINT "APPARENT TEMPERATURE = "; APPTEMP; " "; U$
- IF DF < 0 THEN
- GOTO TARGET79
- END IF
- GOTO TARGET80
- TARGET79:
- LOCATE 20, 19
- PRINT "SEVERE SULTRINESS..."
- TARGET80:
- IF CLRT$ = "Y" THEN
- COLOR 7, 0, 0
- END IF
- LOCATE 23, 19
- INPUT "RUN ANOTHER HEAT INDEX FACTOR (Y/N)"; L$
- IF L$ = "Y" OR L$ = "y" THEN
- GOTO TARGET12
- END IF
- LOCATE 24, 16
- INPUT "View H/I Explanation & Danger Table? (Y/N)"; CT$
- IF CT$ = "N" OR CT$ = "n" THEN
- GOTO TARGET81
- END IF
- IF CLRT$ = "Y" THEN
- COLOR 14, 1, 1
- END IF
- CLS
- PRINT " "
- PRINT " Your Present Calculated Heat Index Value Is"; APPTEMP; " "; U$; "."
- PRINT " "
- PRINT " When the Heat Index reaches 130 degrees or higher, Heat"
- PRINT " Strokes or Sunstrokes are HIGHLY likely with continued"
- PRINT " exposure! When the Heat Index ranges from 105 to 130"
- PRINT " degrees, sunstroke, heat exhaustion and heat cramps are"
- PRINT " likely with prolonged exposure and/or physical activity."
- PRINT " Heat Index ranges between 90 and 105 degrees indicate a"
- PRINT " possibility of heat cramps and heat exhaustion with"
- PRINT " prolonged exposure and/or physical activity."
- PRINT " "
- PRINT " Program calculations assume an adult, wearing long pants"
- PRINT " and a short sleeved shirt, walking in shade at 3.1 MPH"
- PRINT " with standard sea level air pressure, a wind speed of"
- PRINT " 5.6 MPH, and a vapor pressure of 1.6kPa. In effect, the"
- PRINT " calculations approximate the temperature that current"
- PRINT " conditions feel like to the average person."
- PRINT " "
- IF CLRT$ = "Y" THEN
- COLOR 7, 0, 0
- END IF
- TARGET81:
- RETURN
- TARGET78:
- TC = TA
- IF U$ = "F" OR U$ = "f" THEN
- TC = (TA - 32) * 5 / 9
- END IF
- ES = 6.11 * 10 ^ ((7.567 * TC) / (239.7 + TC))
- E = .01 * RH * ES
- GOTO TARGET82
- TARGET84:
- IF DF < 0 THEN
- GOTO TARGET83
- END IF
- TARGET86:
- IF U$ = "F" OR U$ = "f" THEN
- APPTEMP = 32 + 1.8 * APPTEMP
- END IF
- RETURN
- TARGET82:
- TB = 37
- PB = 5.65
- Q = 180
- RS = .0387
- ZS = .0521
- EHC = 17.4
- PHI2 = .84
- R = .124
- CHC = 11.6
- PINF = .1 * E
- HER = 4.18 + .036 * TC
- ERA = 1 / (EHC + HER)
- QV = Q * (.143 - .00112 * TC - .0168 * PINF)
- EZA = .060606 / EHC
- HR = 3.35 + .049 * TC
- ARA = 1 / (CHC + HR)
- AZA = .060606 / CHC
- Q2U = ((TB - TC) + (PB - PINF) * ERA / (ZS + EZA)) / (RS + ERA)
- QJ = (Q - QV - (1 - PHI2) * Q2U) / PHI2
- K = (RS + ARA) + (ZS + AZA) / R - ((TB - TC) + (PB - PINF) / R) / QJ
- L = (RS + ARA) * (ZS + AZA)
- L = (L - ((TB - TC) * (ZS + AZA) + (PB - PINF) * ARA) / QJ) / R
- F = K * K - 4 * L
- IF F < 0 THEN
- DF = -1
- END IF
- IF F < 0 THEN
- GOTO TARGET84
- END IF
- RF = .5 * (-K + SQR(F))
- DF = 60 * RF
- IF DF < 0 THEN
- GOTO TARGET84
- END IF
- W1 = .2016
- W2 = (1 - PHI2) / (RS + ERA)
- W3 = PHI2 / (RS + RF + ARA)
- W4 = 159.0984
- W5 = 37
- W6 = 4.05 * ERA / (ZS + EZA)
- W7 = 4.05 * (RF + ARA) / (ZS + R * RF + AZA)
- APPTEMP = (-W4 + W2 * (W5 + W6) + W3 * (W5 + W7)) / (W1 + W2 + W3)
- GOTO TARGET84
- TARGET83:
- HC = 12.3
- HR = 4.1 + .028 * TC
- RA = 1 / (HC + HR)
- ZA = .060606 / HC
- QU = Q - QV
- FOR IT = 1 TO 10
- ZS = ((PB - PINF) * RA) / (QU * (RS + RA) - (TB - TC)) - ZA
- IF ZS < 0 THEN
- ZS = 0
- END IF
- R3 = (ZS / 600000!) ^ .2
- C = ABS(RS - R3)
- IF C <= .0001 THEN
- GOTO TARGET85
- END IF
- RS = .5 * (RS + R3)
- NEXT IT
- TARGET85:
- N1 = 159.0984
- N2 = 37
- N3 = 4.05 * RA / (ZS + ZA)
- N4 = (RS + RA)
- N5 = .2016
- APPTEMP = (-N1 + (N2 + N3) / N4) / (N5 + 1 / N4)
- GOTO TARGET86
- REM
- REM TEMP-HUMIDITY INDEX SUBROUTINE
- REM
- TARGET10:
- CLS
- IF CLRT$ = "Y" THEN
- COLOR 12
- END IF
- LOCATE 2, 26
- PRINT "TEMPERATURE HUMIDITY INDEX"
- IF CLRT$ = "Y" THEN
- COLOR 5
- END IF
- LOCATE 4, 34
- PRINT DATE$
- LOCATE 5, 35
- PRINT TIME$
- IF CLRT$ = "Y" THEN
- COLOR 3, 0, 0
- END IF
- KEY OFF
- LOCATE 7, 24
- PRINT "THE TEMPERATURE HUMIDITY INDEX"
- LOCATE 8, 21
- PRINT "DETERMINES THE EFFECTIVE TEMPERATURE"
- LOCATE 11, 12
- INPUT "ENTER THE TEMPERATURE IN FAHRENHEIT "; T
- LOCATE 12, 12
- INPUT "ENTER THE RELATIVE HUMIDITY (`50'= 50% ) "; H
- LOCATE 15, 15
- PRINT "PLEASE WAIT - EFFECTIVE TEMPERATURE BEING COMPUTED"
- LOCATE 18, 30
- FOR C = 1 TO 16
- IF CLRT$ = "Y" THEN
- COLOR (C)
- PRINT "!!!!!!!!!!!!!!!!!!!"
- END IF
- LOCATE 18, 30
- C = C + 1
- FOR Z = 1 TO 400
- NEXT Z
- NEXT C
- IF CLRT$ = "Y" THEN
- COLOR 3, 0, 0
- END IF
- LOCATE 18, 25
- PRINT " "
- IF H > 94 THEN
- A = ((.195 * T) - 15)
- ELSE
- IF H > 89 AND H < 95 THEN
- A = ((.18 * T) - 15)
- END IF
- END IF
- IF H > 79 AND H < 90 THEN
- A = ((.1667 * T) - 15)
- ELSE
- IF H > 69 AND H < 80 THEN
- A = ((.145 * T) - 15)
- END IF
- END IF
- IF H > 59 AND H < 70 THEN
- A = ((.1233 * T) - 15)
- ELSE
- IF H < 60 THEN
- A = ((.085 * T) - 15)
- END IF
- END IF
- TH = (((.8 * T) + 15) + A)
- IF CLRT$ = "Y" THEN
- COLOR 13
- END IF
- LOCATE 20, 10
- PRINT "THE TEMPERATURE HUMIDITY INDEX = "; TH; "DEGREES FAHRENHEIT"
- IF CLRT$ = "Y" THEN
- COLOR 7, 0, 0
- END IF
- LOCATE 23, 17
- INPUT "ANOTHER TEMPERATURE HUMIDITY INDEX (Y/N)"; L$
- IF L$ = "Y" OR L$ = "y" THEN
- GOTO TARGET10
- END IF
- LOCATE 24, 16
- INPUT "View THI Explanation & Comfort Table? (Y/N)"; CT$
- IF CT$ = "N" OR CT$ = "n" THEN
- GOTO TARGET87
- END IF
- GOTO TARGET88
- TARGET87:
- RETURN
- TARGET88:
- IF CLRT$ = "Y" THEN
- COLOR 14, 1, 1
- END IF
- CLS
- PRINT " "
- PRINT " Your Temperature-Humidity Index reading was "; TH; "."
- PRINT " "
- PRINT " Readings in excess of 70 represent the point where a few people"
- PRINT " begin to feel uncomfortable. Over 75, about 1/2 of all people"
- PRINT " will feel uncomfortable. Nearly all people will feel uncomfortable"
- PRINT " with readings over 79 with rapidly decreasing work efficiency"
- PRINT " begining with levels in excess of 84; and EXTREME DANGER with"
- PRINT " possibility of heat exhaustion and heat stroke begin with levels"
- PRINT " of 92 and higher."
- PRINT " "
- PRINT " The THI number, used to express the combined temperature-humidity"
- PRINT " effect provides a fairly good index of equivalent heat stress. In"
- PRINT " engineering, this combined index is refered to as `effective temp-"
- PRINT " erature'. The weather bureau has also been known to refer to it as"
- PRINT " the Discomfort Index. It is NOT the same as the `Heat Index' even"
- PRINT " though they both help to compute `Appearant' Temperatures."
- PRINT " "
- PRINT " "
- IF CLRT$ = "Y" THEN
- COLOR 7, 0, 0
- END IF
- RETURN
- TARGET14:
- REM
- REM DEW POINT SUBROUTINE
- REM
- TARGET89:
- CLS
- IF CLRT$ = "Y" THEN
- COLOR 10
- END IF
- LOCATE 2, 28
- PRINT "DEW POINT CALCULATION"
- IF CLRT$ = "Y" THEN
- COLOR 5
- END IF
- LOCATE 4, 34
- PRINT DATE$
- LOCATE 5, 35
- PRINT TIME$
- IF CLRT$ = "Y" THEN
- COLOR 3, 0, 0
- END IF
- KEY OFF
- LOCATE 7, 12
- INPUT "ENTER TEMPERATURE IN FAHRENHEIT "; T
- LOCATE 8, 12
- INPUT "ENTER THE RELATIVE HUMIDITY (`50' = 50%) "; DPRH
- T = (T - 32) * 5 / 9
- X = 1 - (.01 * DPRH)
- TD = T - (14.55 + .114 * T) * X - ((2.5 + .007 * T) * X) ^ 3 - (15.9 + .117 * T) * X ^ 14
- TD = (TD * 9 / 5) + 32
- IF CLRT$ = "Y" THEN
- COLOR 3
- END IF
- LOCATE 11, 19
- PRINT "PLEASE WAIT - DEW POINT BEING COMPUTED"
- FOR ZZ = 1 TO 1600
- NEXT ZZ
- IF CLRT$ = "Y" THEN
- COLOR 4
- END IF
- LOCATE 13, 23
- PRINT "TF=(T-32)*5/9:X=1-(.01*DPRH)"
- FOR Z = 1 TO 800
- NEXT Z
- LOCATE 14, 9
- PRINT "TD=T-(14.55+.114*T)*X-((2.5+.007*T)*X)^3-(15.9+.117*T)*X^14"
- FOR ZXC = 1 TO 800
- NEXT ZXC
- LOCATE 15, 30
- PRINT "TD=(TD*9/5)+32"
- FOR ZX = 1 TO 1600
- NEXT ZX
- IF CLRT$ = "Y" THEN
- COLOR 13
- END IF
- LOCATE 19, 21
- PRINT "DEW POINT CALCULATION = "; TD
- IF CLRT$ = "Y" THEN
- COLOR 7, 0, 0
- END IF
- LOCATE 24, 20
- INPUT "CALCULATE ANOTHER DEW POINT (Y/N)"; L$
- IF L$ = "Y" OR L$ = "y" THEN
- GOTO TARGET89
- END IF
- RETURN
- REM ~~~~~~~~~~LAST LINE OF PROGRAM~~~~~~~~~
- :
-
-
-